#include "common.hpp"

//读端
int main()
{
    //1、创建管道
    CreatePipe();
    

    //2、以读的方式打开管道文件
    int rfd=open(PIPE_NAME,O_RDONLY);//以读的方式打开管道文件
    if(rfd<0)//文件打开失败
    {
        cout<<"以读方式打开管道失败："<<strerror(errno)<<endl;
        exit(0);
    }

    cout<<"读端打开管道成功"<<endl;//只有双方同时open管道，管道才能打开成功，否则，先open的一方会进入阻塞状态

    //3、从管道文件中读取数据并输出
    while(true)
    {
        char buffer[1024];//暂存从管道中读取到的数据
        ssize_t s=read(rfd,buffer,sizeof(buffer)-1);
        buffer[s]=0;//将有效内容的后一个字符置为\0

        if(s>0)//读取成功
        {
            cout<<buffer<<" i am process B,i can get message | mypid:"<<getpid()<<endl;
        }
        else//写端已关闭
        {
            cout<<"A quit, me too"<<endl;
            break;
        }
    }

    close(rfd);//关闭读端文件描述符

    //4、删除管道
    DeletePipe();//删除管道



    return 0;
}